package com.example.demo.netty.protobuf.client;

import com.example.demo.netty.websocket.proto.ProtobufInfo;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

import java.util.Random;

public class PBClientHandler extends SimpleChannelInboundHandler {
    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, Object o) throws Exception {
        System.out.println(o);
    }

    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {


            // 创建对象，或者直接赋值
            ProtobufInfo.ClassInfo classInfo= null;
            int i = new Random().nextInt(2);
            if(i==0){
                // 这行是新对象构建器
                classInfo= ProtobufInfo.ClassInfo.newBuilder()
                        // 这里设置对象具体是枚举类中的谁，括号里就很直白，跟进去看proto文件就很清晰
                        .setDataEnum(ProtobufInfo.ClassInfo.ClassType.User)
                        // 这里用上面设置对象对应的set方法传入自己的构建器
                        .setUser(ProtobufInfo.User.newBuilder()
                                // 设置对应的属性并创建
                                .setAge(28).setName("qwe").build())
                        // 最后整体构建出对象
                        .build();
                // 发出去就行了
                ctx.writeAndFlush(classInfo);
            } else if (i==1) {
                classInfo= ProtobufInfo.ClassInfo.newBuilder()
                        .setDataEnum(ProtobufInfo.ClassInfo.ClassType.Game)
                        .setGame(ProtobufInfo.Game.newBuilder()
                                .setPrice(268).setName("黑猴").build())
                        .build();
                ctx.writeAndFlush(classInfo);
            }
    }
}
